
from datetime import datetime

from langchain_core.messages import AIMessage
from langchain_core.prompts import PromptTemplate, ChatPromptTemplate, MessagesPlaceholder, HumanMessagePromptTemplate
"""
# 创建一个提示词模板，变量是subject，是可以任意定义的
prompt = PromptTemplate.from_template("请讲一个关于{subject}的笑话")
# 对提示词模板进行里面的变量复制，通过 invoke
prompt_valus = prompt.invoke({"subject":"程序员"})
# 通过fromat 方法对提示词里面的变量进行赋值---》能直接看到的消息
print(prompt.format(subject="医生"))
# 将赋值完成的提示词变量转化成string--->是能够直接看到的消息
print(prompt_valus.to_string())
# 将赋值完成的提示词变量转化成messages---> 能够被llm直接使用
print(prompt_valus.to_messages())
print("==================")
"""



chat_prompt = ChatPromptTemplate.from_messages(
    [("system","你是OpenAi 开发的机器人，请根据用户的问题直接回答，当前时间为{now}"),
     MessagesPlaceholder("chat_history"),
     HumanMessagePromptTemplate.from_template("请讲一个关于{subject}的冷笑话")
    ]
).partial(now = datetime.now)



chat_prompt_value = chat_prompt.invoke({
    "chat_history":[
        ("human","我叫附小瑞"),
        AIMessage("我是chatAI,有什么可以帮到你")
    ],
    "subject":"程序员"
}
)

print(chat_prompt_value)
print(chat_prompt_value.to_string())

